package net.interneteidee.controller;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotNull;


import net.interneteidee.entity.Prodotto;
import net.interneteidee.servizi.ProdottoCategoriaFamigliaService;
import net.interneteidee.utility.ComponentName;

@ManagedBean
@RequestScoped
public class ProdottoController implements ComponentName {

	private String statusRicercheProdotto;
	private List<Prodotto> prodottiOrdinati;
	private List<Prodotto> prodottiFatturati;
	
	private Date dataDa;
	
	private Date dataA;
	
	private String tipologiaSelezione;

	@Inject
	ProdottoCategoriaFamigliaService prodottoCategoriaFamigliaService;

	public ProdottoController() {
		// TODO Auto-generated constructor stub
		prodottiOrdinati = new LinkedList<Prodotto>();
		prodottiFatturati = new LinkedList<Prodotto>();
		dataDa = new Date();
		dataA = new Date();
	}
	
	/**
	 * Restituisce tutti i prodotti ordinati che rientrano nel range dataDa dataA
	 */
	public void  findProdottiOrdinatiOFatturati(){
		
		if(tipologiaSelezione.equals("Ordinati")){
			prodottiOrdinati = prodottoCategoriaFamigliaService.findProdottiOrdinati(dataDa, dataA);
			statusRicercheProdotto = "Sono stati selezionati "+prodottiOrdinati.size()+" prodotti ordinati";
		}
		else if(tipologiaSelezione.equals("Fatturati")){
			prodottiFatturati= prodottoCategoriaFamigliaService.findProdottiFatturati(dataDa, dataA);
			statusRicercheProdotto = "Sono stati selezionati "+prodottiFatturati.size()+" prodotti fatturati";

		}
		
	}
	
	@AssertTrue(message="Date non corrette" )
	public boolean isDataAMinoreDiDataDa(){
		if(dataA.before(dataDa))
			return false;
		
		return true;
	}
	
	public ProdottoCategoriaFamigliaService getProdottoCategoriaFamigliaService() {
		return prodottoCategoriaFamigliaService;
	}

	public void setProdottoCategoriaFamigliaService(
			ProdottoCategoriaFamigliaService prodottoCategoriaFamigliaService) {
		this.prodottoCategoriaFamigliaService = prodottoCategoriaFamigliaService;
	}

	public List<Prodotto> getProdottiOrdinati() {
		return prodottiOrdinati;
	}

	public void setProdottiOrdinati(List<Prodotto> prodottiOrdinati) {
		this.prodottiOrdinati = prodottiOrdinati;
	}

	public Date getDataDa() {
		return dataDa;
	}

	public void setDataDa(Date dataDa) {
		this.dataDa = dataDa;
	}

	public Date getDataA() {
		return dataA;
	}

	public void setDataA(Date dataA) {
		this.dataA = dataA;
	}

	public String getTipologiaSelezione() {
		return tipologiaSelezione;
	}

	public void setTipologiaSelezione(String tipologiaSelezione) {
		this.tipologiaSelezione = tipologiaSelezione;
	}

	public List<Prodotto> getProdottiFatturati() {
		return prodottiFatturati;
	}

	public void setProdottiFatturati(List<Prodotto> prodottiFatturati) {
		this.prodottiFatturati = prodottiFatturati;
	}

	public String getStatusRicercheProdotto() {
		return statusRicercheProdotto;
	}

	public void setStatusRicercheProdotto(String statusRicercheProdotto) {
		this.statusRicercheProdotto = statusRicercheProdotto;
	}
	

}
